#ifndef DISKREPOSITORY_H
#define DISKREPOSITORY_H

#include <QObject>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QString>
#include <QList>
#include <QJsonArray>
#include "database/database_manager.h"

// 前向声明
struct KmsDisk;

class DiskRepository
{
public:
    explicit DiskRepository(QSqlDatabase &database, const QString &currentUserId = QString());
    
    // 基本CRUD操作
    bool insert(const KmsDisk &disk);
    bool update(const KmsDisk &disk);
    QList<KmsDisk> findByName(const QString &name);
    QList<KmsDisk> findAll();
    
    // 同步操作
    bool syncFromJson(const QJsonArray &disksData);
    
private:
    QSqlDatabase &m_database;
    QString m_currentUserId;
    
    bool isDatabaseConnected() const;
    KmsDisk mapFromQuery(const QSqlQuery &query) const;
};

#endif // DISKREPOSITORY_H

